const path = require("path");
module.exports = {
  mode: "development",
  devtool: "source-map",
  // 会影响 入口文件和loaders的解析，你的配置会独立于CWD（当前执行路径）
  context: path.resolve(__dirname, "app"),
  //
  output: {
    // 将入口文件的导出暴露给指定的变量
    // library: "abc",
    // 该配置可以更加精细的控制如何暴露入口包的导出结果 枚举值有 var window global commonjs
    // libraryTarget: "commonjs",
  },
  // 设置目标代码最终要运行的环境 web和node
  //   target: "node",
  module: {
    // 设置不解析的文件，通常用来忽略那些大型的单模块库，以提高构建性能。
    // noParse: /jquery/,
  },
  //   主要用于控制模块解析过程
  resolve: {
    // 当解析模块时，如何遇到 require("test")这样的模块时，会优先从node_modules中寻找，依次向上。
    // modules: ["node_modules"],
    // 设置webpack自动解析扩展名。
    extensions: [".js", ".json", ".jsx"],
    // 配置别名，可以更加方便的导入依赖，减少多层目录下，引入写法依赖的难度。
    alias: {
      "@": path.resolve(__dirname, "app", "src"),
      _: __dirname,
    },
  },
  //   从最终的bundle中排队掉模块的源码。比较适合第三方库来自于外部CDN的情况。
  externals: {
    jquery: "$",
  },
};
